package vip.zhenzicheng.algorithm.demo;

/**
 * 打印整数的32位 二进制
 *
 * @author zhenzicheng
 * @date: 2022-05-16 18:29
 */
public class PrintB {
  public static void main(String[] args) {
    // int-32位
    int num = 83928328;
    print(num);
    // >> 带符号位移 >>> 不带符号位移
    print(-8 >> 2);
    print(-8 >>> 2);
  }

  /**
   * 将1左移后与原10进制数进行&操作，只有1&1结果是1其他都是0
   * 根据这样的巧妙模式，可以通过num和1进行左移来一位一位判断从而推敲出指定数原来二进制的内容
   */
  private static void print(int num) {
    for (int i = 31; i >= 0; i--) {
      System.out.print((num & (1 << i)) == 0 ? "0" : "1");
    }
    System.out.println();
  }
}
